Virtualization has always been a basic requirement in today's datacenter and a foundation for cloud as it may increase hardware utilization and reduce cost. In the current virtual environment, SR-IOV has become increasingly important because it allows a plurality of System Images (SI) (e.g., virtual machines running on hypervisor) to share the same Peripheral Component Interconnect (PCI) hardware resources. The SR-IOV is a novel virtualization method for high-speed PCI (PCIe) devices and is a standard developed by PCI Special Interest Group (SIG) that works in conjunction with a system chipset. The SR-IOV does not require the hypervisor to participate in Input/Output (I/O) operations and allows the device supporting the SR-IOV function to be assigned directly to a virtual machine, thereby providing better performance and lower latency.
Many endpoint devices do not consider cloud virtualization at all during design, such that a number of PCIe endpoint devices do not support an SR-IOV function. In order to support the SR-IOV function, it is required to re-design an endpoint controller of an Application Specific Integrated Circuit (ASIC) and re-write the firmware. However, it is known that the design and development cycle of ASICs is quite long and it is hard for ASICs to conform to the rapidly changing requirements of software. For example, many Non-Volatile memory express (NVMe) Solid State Disks (SSD) do not support the SR-IOV function. Hence, there is a need to use the SR-IOV function on the SR-IOV function unsupported endpoint device for virtualization.